package com.bnd.service;

import com.bnd.domain.CharacterInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

/**
 * 角色信息服务接口
 * @author 20668
 * @description 针对表【character_info】的数据库操作Service
 * @createDate 2025-09-22 22:12:28
 */
public interface CharacterInfoService extends IService<CharacterInfo> {
    /**
     * 角色动态分页查询（名称模糊 + 分类筛选；默认分类为“全部”）
     */
    PageInfo<CharacterInfo> pageSearch(String keyword, String category, int pageNum, int pageSize);

    /**
     * 角色音频播放 【SSE调用】
     * @param characterId 角色id
     * @return 角色音频
     */
    SseEmitter voicePlayBackWithSse(Long characterId);

    /**
     * 角色音频播放 【同步调用】
     * @param characterId 角色id
     * @return 角色音频
     */
    ResponseEntity<Resource> voicePlayBack(Long characterId);

    /**
     * 获取收藏角色列表
     * @return 收藏的角色列表
     */
    java.util.List<CharacterInfo> listFavorites();

    /**
     * 根据ID获取角色详情（带缓存）
     * @param id 角色ID
     * @return 角色信息
     */
    CharacterInfo getCharacterById(Long id);

    /**
     * 清除角色列表缓存
     */
    void clearCharacterListCache();

    /**
     * 清除角色详情缓存
     * @param id 角色ID
     */
    void clearCharacterDetailCache(Long id);

    /**
     * 清除收藏列表缓存
     */
    void clearCharacterFavoritesCache();
}
